/*
 * 	Flan.Zeng 2011-2016	http://git.oschina.net/signup?inviter=flan
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.flan.stock.view;

import java.util.List;

import com.flan.stock.R;

import android.content.Context;
import android.content.res.TypedArray;
import android.support.v4.view.PagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.util.AttributeSet;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.TranslateAnimation;
import android.widget.ImageView;
import android.widget.RelativeLayout;

/**
 * 自定义可以自定义指示器布局的ViewPager控件
 * @author flan
 * @date   2015年11月7日
 */
public class TouTiaoPagerView extends RelativeLayout implements OnPageChangeListener{
	
	private int currentTab;
	private int tabImgWidth;
	private ImageView img_tab;
	private ViewPager viewPager;
	
	
	public TouTiaoPagerView(Context context,int LayoutId) {
		super(context);
		inflate(context, LayoutId, this);
		viewPager = (ViewPager) this.findViewById(R.id.vp_fragment);
		img_tab = (ImageView) this.findViewById(R.id.img_tab);
	}

	public TouTiaoPagerView(Context context, AttributeSet attrs) {
		super(context, attrs);
		
		TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.SimplePagerView);
		int layout = typedArray.getResourceId(R.styleable.SimplePagerView_pager_layout, R.layout.layout_news_toutio);
		typedArray.recycle();
		
		inflate(context, layout, this);
		viewPager = (ViewPager) this.findViewById(R.id.vp_fragment);
		img_tab = (ImageView) this.findViewById(R.id.img_tab);
		
	}
	
	public void setOnPageChangeListener(OnPageChangeListener listener){
		viewPager.addOnPageChangeListener(listener);
	}
	
	/**
	 * 设置控件中数据
	 */
	public void setPagerList(List<View> viewlist){
		viewPager.setAdapter(new SimplePagerAdapter(viewlist));
		
		//获取屏幕分辨率 宽度
		DisplayMetrics dm = new DisplayMetrics();
		dm = getResources().getDisplayMetrics();
		int screenW = dm.widthPixels;
		if(viewlist != null && viewlist.size() > 0){
			tabImgWidth = screenW/viewlist.size();
		}else {
			tabImgWidth = screenW;
		}
		
		LayoutParams para = (LayoutParams) img_tab.getLayoutParams();
		para.width = tabImgWidth;
		img_tab.setLayoutParams(para);
	}
	
	/**
	 * 设置当前指示器 位置
	 * @param position
	 */
	private void setCurrentTab(int position){
		
		Animation animation = null;
		animation = new TranslateAnimation(tabImgWidth*currentTab, tabImgWidth*position, 0, 0);
		animation.setFillAfter(true);//True:图片停在动画结束位置
		animation.setDuration(300);	//设置动画完成时间
		img_tab.startAnimation(animation);
		
		currentTab = position;
	}
	
	@Override
	public void onPageScrollStateChanged(int arg0) {
	}

	@Override
	public void onPageScrolled(int arg0, float arg1, int arg2) {
	}

	@Override
	public void onPageSelected(int position) {
		setCurrentTab(position);
	}
	
	/**
	 * 简单的ViewPager适配器
	 * @author flan
	 * @date   2015年11月7日
	 */
	class SimplePagerAdapter extends PagerAdapter {
		
		private List<View> viewList;
		
		public SimplePagerAdapter(List<View> viewList) {
			super();
			this.viewList = viewList;
		}

		@Override
		public int getCount() {
			
			if(viewList != null){
				return viewList.size();
			}
			return 0;
		}

		@Override
		public boolean isViewFromObject(View arg0, Object arg1) {
			return arg0 == arg1;
		}

		@Override
		public void destroyItem(ViewGroup container, int position, Object object) {
			container.removeView(viewList.get(position));
		}

		@Override
		public Object instantiateItem(ViewGroup container, int position) {
			container.addView(viewList.get(position));
			return viewList.get(position);
		}
		
	}

}















